package com.ycy.analyzer;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
import org.apache.lucene.analysis.tokenattributes.TypeAttribute;

import java.io.IOException;

public class PrintUtil {


  /**
   * 打印
   *
   * @param str
   * @param analyzer
   */
  public static void displayTokenAll(String str, Analyzer analyzer) {
    //这个方法获取的是sink,调用的时候把文本传入
    TokenStream tokenStream = analyzer.tokenStream("content", str);
    //保存词汇
    CharTermAttribute charTermAttribute = tokenStream.addAttribute(CharTermAttribute.class);
    PositionIncrementAttribute positionIncrementAttribute = tokenStream.addAttribute(PositionIncrementAttribute.class);
    OffsetAttribute offsetAttribute = tokenStream.addAttribute(OffsetAttribute.class);
    TypeAttribute typeAttribute = tokenStream.addAttribute(TypeAttribute.class);
    try {
      tokenStream.reset();
      while (tokenStream.incrementToken()) {
        System.out.println(charTermAttribute.toString()
                + ":" + positionIncrementAttribute.getPositionIncrement()
                + ":" + offsetAttribute.startOffset() + "~" + offsetAttribute.endOffset());

      }
    } catch (IOException e) {
      e.printStackTrace();
    }finally {
      try {
        tokenStream.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }

}
